Skip to content

Conversation

@fantasai
Copy link
Contributor

  • Adds test for position-area normal alignment towards non-auto inset when only one inset is auto.
  • Updates some existing tests that have a single auto inset but don't expect it to have an effect.

See w3c/csswg-drafts#12512

Copy link
Collaborator

@wpt-pr-bot wpt-pr-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…to inset

* Adds test for position-area normal alignment towards non-auto inset
  when only one inset is auto.
* Updates some existing tests that have a single auto inset but don't expect
  it to have an effect.

See w3c/csswg-drafts#12512
@fantasai fantasai force-pushed the position-area-alignment-inset branch from 63863c1 to 22ba030 Compare October 28, 2025 17:43
@fantasai fantasai requested a review from a team as a code owner October 28, 2025 17:43
fantasai added a commit to fantasai/WebKit that referenced this pull request Oct 28, 2025
…opposite side

https://bugs.webkit.org/show_bug.cgi?id=301406
rdar://163317238

Reviewed by NOBODY (OOPS!).

Updates PositionedLayoutConstraints::resolvePosition() to unsafe-align to the
non-auto inset when only one inset is auto.

See:
  https://www.w3.org/TR/css-anchor-position/#position-area
  w3c/csswg-drafts#12512

Tests: imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001-ref.html
       imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001.html
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001.html: Added.

Add new tests.
See web-platform-tests/wpt#55722

* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-valid.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in-document.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-chained-004.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-in-overflow-expected.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-in-overflow-ref.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-in-overflow.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-remove-anchors-visible.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-remove-no-overflow.html:

Modify existing tests that (unnecessarily) assumed the previous behavior.
See web-platform-tests/wpt#55722

* Source/WebCore/rendering/PositionedLayoutConstraints.cpp:
(WebCore::PositionedLayoutConstraints::captureInsets):

Don't overwrite auto insets in our capture.

(WebCore::PositionedLayoutConstraints::resolvePosition const):

Check for position-area etc. directly in resolvePosition() instead.

(WebCore::PositionedLayoutConstraints::insetFitsContent const):
* Source/WebCore/rendering/PositionedLayoutConstraints.h:
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::computeOutOfFlowPositionedLogicalWidthUsing const):
(WebCore::RenderBox::computeOutOfFlowPositionedLogicalHeightUsing const):

Update sizing code to not rely on insetBefore/After().isAuto().

* Source/WebCore/rendering/style/StyleSelfAlignmentData.h:
(WebCore::StyleSelfAlignmentData::isNormal const):

Add convenience method.
webkit-commit-queue pushed a commit to fantasai/WebKit that referenced this pull request Oct 29, 2025
…opposite side

https://bugs.webkit.org/show_bug.cgi?id=301406
rdar://163317238

Reviewed by Alan Baradlay.

Updates PositionedLayoutConstraints::resolvePosition() to unsafe-align to the
non-auto inset when only one inset is auto.

See:
  https://www.w3.org/TR/css-anchor-position/#position-area
  w3c/csswg-drafts#12512

Tests: imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001-ref.html
       imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001.html
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-alignment-inset-001.html: Added.

Add new tests.
See web-platform-tests/wpt#55722

* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-valid.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in-document.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-chained-004.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-in-overflow-expected.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-in-overflow-ref.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-in-overflow.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-remove-anchors-visible.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-visibility-remove-no-overflow.html:

Modify existing tests that (unnecessarily) assumed the previous behavior.
See web-platform-tests/wpt#55722

* Source/WebCore/rendering/PositionedLayoutConstraints.cpp:
(WebCore::PositionedLayoutConstraints::captureInsets):

Don't overwrite auto insets in our capture.

(WebCore::PositionedLayoutConstraints::resolvePosition const):

Check for position-area etc. directly in resolvePosition() instead.

(WebCore::PositionedLayoutConstraints::insetFitsContent const):
* Source/WebCore/rendering/PositionedLayoutConstraints.h:
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::computeOutOfFlowPositionedLogicalWidthUsing const):
(WebCore::RenderBox::computeOutOfFlowPositionedLogicalHeightUsing const):

Update sizing code to not rely on insetBefore/After().isAuto().

* Source/WebCore/rendering/style/StyleSelfAlignmentData.h:
(WebCore::StyleSelfAlignmentData::isNormal const):

Add convenience method.

Canonical link: https://commits.webkit.org/302299@main
@foolip
Copy link
Member

foolip commented Oct 30, 2025

There are no new test failures in Chrome or Firefox, but there are differences in the failed reftest screenshots:
https://wpt.fyi/results/css/css-anchor-position?diff&filter=ADC&run_id=5090111160320000&run_id=5096963042443264
https://wpt.fyi/results/css/css-anchor-position?diff&filter=ADC&run_id=5153841965432832&run_id=6318129551769600

No Safari results, I'll close and reopen to see if that's enough to trigger them.

@foolip foolip closed this Oct 30, 2025
@foolip foolip reopened this Oct 30, 2025
@fantasai
Copy link
Contributor Author

fantasai commented Oct 30, 2025

I looked at the Chrome failures and I have no idea why it's rendering the way it is on the failing tests. The modified tests pass in Safari.

Copy link
Member

@nt1m nt1m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No change in browser results, aside from a Firefox progression

Matches a spec change, LGTM.

cc @tabatkins @bfgeek @dshin-moz @emilio

@nt1m nt1m merged commit 12c24ca into web-platform-tests:master Nov 3, 2025
35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants